/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package consultas;

import static com.sun.tools.xjc.model.CBuiltinLeafInfo.CALENDAR;
import java.util.Calendar;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.security.MessageDigest;
import java.sql.CallableStatement;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.servlet.http.HttpSession;
;

public class funciones {
    private String usuario="";
    /*private int categoria=0;
    public void setCategoria(int cate){
        this.categoria=cate;
    }
    public int getCategoria(){
        return this.categoria;
    }*/
    private int idRifa=0;
    public String mensajes="";
    
    public void setIdRifa(String id){
        int id1=Integer.parseInt(id);
        this.idRifa=id1;
    }
    public int getIdRifa(){
        return this.idRifa;
    }

    //Para las urls, url1=descripciones, url2=imagenes
    public static String url;
    public static String url1="";
    public static String url2="";
    public static String fecha_actual;
    
    
    //variables para ordenar la busqueda de rifas
    public  String categoria_seleccionada="Categoria";
    public String ord_precio_activado="no";
    public String ord_fecha_activado="no";
   
    
    //private boolean usuarioLogeado=false;
    public boolean usuarioconectadoOK=false;
    
    public static String nick="";
    public String email="";
    public String carnet="";
    public String nombre="";
    public String apellido="";
    public String anio="";
    public String mes="";
    public String dia="";
    public String direccion="";
    public String provincia="";
    public String poblacion="";
    public String cp="";
    public String telf="";
    //comprando un producto=su posicion en el array
    public  int posicionArrayComprando;
    
    //saldo restante para update
    public float saldo_restante;
 
    public String nombre_imagen; //nombre imagen
    public int recordarme=0;
    //public boolean usuarioconectadoOK=true;

    //para comprar
    public String num_comprar;
    
    public String itemname; //nombre imagen

    public String nom_producto;
    public String precio_producto;
    public String num_boletos;
    public String categoria;
    public String fecha_sorteo;
    public String descripcion; //nombre descripcion
    public String gastos;
    public HttpSession sesionOk;
    public int okacceso=0;
    public static int usuarioExistente;

    public String palabras_clave;
    public String usuario_sub;
    public String cookieUsu="";
    public String cookiePass="";
    
    //Para insertar necesito consultar:
    private String id_usuario;
    private String id_producto;
    
    //ATRIBUTOS PARA LA PAGINACION
    private int numProductosAMostrar = 5;
    private int contProductos = 0;
    //FIN DE DECLARACION DE LOS ATRIBUTOS DE PAGINACION
    
    public void inicializarNumProductos(){
        numProductosAMostrar=5;
    }
    public void setNumProductosAMostrar(int valorDeBoton){
        numProductosAMostrar=numProductosAMostrar*valorDeBoton;
    }
    public int getNumProductosAMostrar(){
        return numProductosAMostrar;
    }
    
    public void setContProductos(){
        contProductos=getNumProductosAMostrar()-5;
    }

    public float getSaldo_restante() {
        return saldo_restante;
    }

    public void setSaldo_restante(float saldo_restante) {
        this.saldo_restante = saldo_restante;
    }

    
    
   
    //FIN DE DECLARACION DE LOS ATRIBUTOS DE PAGINACION

    
    public List<Producto> listaProductos = new ArrayList<Producto>();
    
    public funciones(){
        conexion conex = new conexion();//variable que abre la conexion
	ResultSet rs = null;//variable que devuelve el resultado
        
      
       Calendar cal = Calendar.getInstance();
       
       String ano=String.valueOf(cal.get(Calendar.YEAR));
       String dia;
       String mes;
       
       if(cal.get(Calendar.DAY_OF_MONTH)<10){
           dia='0'+String.valueOf(cal.get(Calendar.DAY_OF_MONTH));
       }
       else{
           dia=String.valueOf(cal.get(Calendar.DAY_OF_MONTH));
       }
       
       if(cal.get(Calendar.MONTH)+1<10){
           mes='0'+String.valueOf(cal.get(Calendar.MONTH)+1);
       }
       else{
         mes=String.valueOf(cal.get(Calendar.MONTH)+1);
       }
    
     
      
      
       fecha_actual= ano+"-"+mes+"-"+dia;
       System.out.println(fecha_actual); 
        
        url=this.getClass().getResource("funciones.class").getPath();
       
         String[]parts = url.split("/");
        for(int i=0;i<parts.length;i++){
           
        if(parts[i].equals("build")){
              url1+="web/descripciones/";
              url2+="web/img/";
              break;
          }else{
              url1+=parts[i]+"/";
              url2+=parts[i]+"/";
          }
        }
        System.out.println("descripcion url"+url1);
        System.out.println("imagenes url"+url2); 
        System.out.println("primer valor de categoria_seleccionada: " + categoria_seleccionada);
    
    }
    
   
    
    //GETTERS
    public String getUsuario(){
        return this.usuario;
    }
    public boolean getUsuarioConectadoOk(){
        return this.usuarioconectadoOK;
    }
    public int getOkAcceso(){
        return this.okacceso;
    }
    /*public int getUsuarioExistente(){
        return this.usuarioExistente;
    }*/
    /*public boolean getUsuarioLogeado(){
        return this.usuarioLogeado;
    }*/
    
    //SETTERS
    public void setUsuarioConectadoOk(boolean usuarioConectado){
        this.usuarioconectadoOK = usuarioConectado;
    }
    public void setOkAcceso(int num){
        this.okacceso = num;
    }
    public void setUsuario(String x){
        usuario=x;
    }
    /*public void setUsuarioExistente(boolean usuarioExiste){
        this.usuarioExistente = usuarioExiste;
    }*/
    
    public int comprobarUsuario (String username, String password) {
        
        ResultSet rs2=null;
        String user, pass;
                    System.out.println ("voy a comprobar el username y pass");
        try {
            
            PreparedStatement ps=conexion.conn.prepareStatement("SELECT nick, contrasena FROM usuarios;");
                    rs2=ps.executeQuery();
                    while(rs2.next()) {
                        user=rs2.getString(1);//El numero entre parentesis es el orden que ocupa el campo en la tabla de la BBDD
                        pass=rs2.getString(2);
                            System.out.println(user + "/"+ pass);
                            if(user.equals(username) && pass.equals(password)) {
                                okacceso=1;
                                System.out.println("OKACCESO ES IGUAL: "+okacceso);
                                usuarioconectadoOK=true;
                                System.out.println("el usuariologueado ha cambiado a:"+this.usuarioconectadoOK);
                                usuario=user;
                                break;
                            }else{
                                if(user.equals(username) && !pass.equals(password)){
                                    okacceso=2;
                                    System.out.println("OKACCESO ES IGUAL: "+okacceso);
                                    usuarioconectadoOK=false;
                                    break;
                                }else{
                                    
                                    okacceso=3;
                                    System.out.println("Entro en error ok3"+okacceso);
                                    usuarioconectadoOK=false;
                                    
                                }
                            }
                    }
        }catch(SQLException e) {
            System.out.println("ERROR!: Ha habido un problema al realizar la comprobacion");
            e.printStackTrace();
            }
       return okacceso;
 }
    
    
    
    public  void mostrarProductos(){
    
        listaProductos.removeAll(listaProductos);
        
        ResultSet rs3=null;
         //conexion conex = new conexion();
         try {
            PreparedStatement ps=conexion.conn.prepareStatement("SELECT nombre_producto, nick, descripcion, precio, categoria, img_producto, num_boletos, tiempo, gastos_envio, productos.id_producto, id_rifa FROM productos JOIN usuarios ON productos.id_usuario=usuarios.id_usuario JOIN rifas ON productos.id_producto=rifas.id_producto;");
                    rs3=ps.executeQuery();
                    
                    while(rs3.next()) {
                        
                        Producto pro= new Producto();
                        
                        pro.setNombre_producto(rs3.getString(1));//El numero entre parentesis es el orden que ocupa el campo en la tabla de la BBDD
                        pro.setNick_usuario(rs3.getString(2));
                        pro.setDescripcion(rs3.getString(3));
                        pro.setPrecio(rs3.getFloat(4));
                        pro.setCategoría(rs3.getString(5));
                        pro.setImg_producto(rs3.getString(6));
                        pro.setNum_boletos(rs3.getInt(7));
                            //calcular los dias que faltan
                           
                        
                            DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 
                            String text = df.format(rs3.getDate(8)); 
                            
                            
                        pro.setDias(CalcularDias(text)+1); 
                        pro.setFecha(text);
                        pro.setPrecio_boleto(pro.getPrecio()/pro.getNum_boletos());
                        
                        pro.setGastos(rs3.getFloat(9));
                        pro.setId_producto(rs3.getInt(10));
                        pro.setId_rifa(rs3.getInt(11));
                        
                        pro.setBoletos_rest(CuantosBoletosQuedan(pro.getId_producto()));
                        
                        
                        if(pro.getDias()>0){
                        listaProductos.add(pro);
                        }
                        
                          
                    }
        }catch(SQLException e) {
            System.out.println("ERROR!: Ha habido un problema");
            e.printStackTrace();
            }
  
    
    
    
    }
    
    
  public  int InsertatRifa(String nom_producto, String precio_producto,String num_boletos,String categoria,String fecha_sorteo,String nombre_imagen,String palabras_clave, String usuario_sub,String gastos){
   
      float precio_boleto;
      precio_boleto= Float.parseFloat(precio_producto)/Integer.parseInt(num_boletos);
         int ok=1;
       
         ResultSet rs3=null;
         //conexion conex = new conexion();
         
         try {
            PreparedStatement ps=conexion.conn.prepareStatement("SELECT id_usuario FROM usuarios WHERE nick='"+usuario_sub+"';");
            rs3=ps.executeQuery();
            
            
            while(rs3.next()) {
                id_usuario=rs3.getString(1);
            }
           
            
                        try {
                            
                             CallableStatement cstmt = conexion.conn.prepareCall("INSERT INTO productos (nombre_producto, id_usuario, precio, categoria, keywords, img_producto) VALUES ('"+nom_producto+"', "+id_usuario+", "+precio_producto+", '"+categoria+"', '"+palabras_clave+"', '"+nombre_imagen+"');");
                             cstmt.executeUpdate();
                          
                                    try {
                                      PreparedStatement ps1=conexion.conn.prepareStatement("SELECT max(id_producto) FROM productos ;");
                                      rs3=ps1.executeQuery();
                                      
                                        while(rs3.next()) {
                                             id_producto=rs3.getString(1);
                                         }
            
                                      
                                               try {
                                               CallableStatement cstmt2 = conexion.conn.prepareCall("UPDATE productos SET descripcion='"+id_producto+".txt' WHERE id_producto="+id_producto+";");
                                               cstmt2.executeUpdate();

                                                                try {
                                                                 CallableStatement cstmt1 = conexion.conn.prepareCall("INSERT INTO rifas (id_producto, num_boletos, tiempo, gastos_envio,precio_boleto) VALUES ("+id_producto+","+num_boletos+",'"+fecha_sorteo+"',"+gastos+","+precio_boleto+");");
                                                                 cstmt1.executeUpdate();


                                                                 }catch(SQLException e) {
                                                               System.out.println("ERROR!: Ha habido un problema en insert rifas");
                                                               e.printStackTrace();
                                                               ok=0;
                                                               }
                                                                
                                                  }catch(SQLException e) {
                                                 System.out.println("ERROR!: Ha habido un problema en insert descripcion");
                                                 e.printStackTrace();
                                                 ok=0;
                                                 } 

                                  
                                    }catch(SQLException e) {
                                        System.out.println("ERROR!: Ha habido un problema en select id_producto");
                                        e.printStackTrace();
                                        ok=0;
                                    }
                            
                            
                        }catch(SQLException e) {
                          System.out.println("ERROR!: Ha habido un problema en insert productos");
                          e.printStackTrace();
                          ok=0;
                        }
            
            
              }catch(SQLException e) {
                System.out.println("ERROR!: Ha habido un probleman en select id_usuario");
                e.printStackTrace();

                ok=0;
            }
            
       
         
         return ok;
         
       
   }
   
   public int DescripcionToFile (String descripcione){
       int ok=1;
       ResultSet rs3=null;
       //conexion conex = new conexion();
       String n=null;
       
       try {
            PreparedStatement ps=conexion.conn.prepareStatement("SELECT max(id_producto) FROM productos ;");
            rs3=ps.executeQuery();
            
              while(rs3.next()) {
                 n=rs3.getString(1);
              }
            
            System.out.println(n);
        
        }catch(SQLException e) {
            System.out.println("ERROR!: Ha habido un problema en select max id_producto");
            e.printStackTrace();
        }
        
        
 
        File f= new File(url1+"\\"+n+".txt");
       
        if(f.exists()){
			System.out.println("Existe");
	}   
        else{
		System.out.println("No existia pero ha sido creado");
                try{
			f.createNewFile();
                        
                }catch(IOException e){
			System.out.println(e.getMessage());
                }
        }
        
        
        
        try{
        
            FileWriter flS=new FileWriter(url1+"\\"+n+".txt",true);
            BufferedWriter fS=new BufferedWriter(flS);
            
            if(!descripcione.equals("")){
			fS.write(descripcione);
            }
        

        fS.close();
        
       }catch(IOException e){
			System.out.println(e.getMessage());
                        ok=0;
		}
        
        
      
        

        return ok;
   }
   
   
  public String LeerArchivo(int id_producto){
      String texto="";
      File archivo = null;
      FileReader fr = null;
      BufferedReader br = null;
      
 
      try {
         // Apertura del fichero y creacion de BufferedReader para poder
         // hacer una lectura comoda (disponer del metodo readLine()).
         archivo = new File (url1+"\\"+id_producto+".txt");
         fr = new FileReader (archivo);
         br = new BufferedReader(fr);
 
         // Lectura del fichero
         String linea;
         while((linea=br.readLine())!=null){
            
           texto+=linea+"<br>"; 
          // linea=br.readLine();
      }
      
      }catch(Exception e){
         e.printStackTrace();
      }finally{
         // En el finally cerramos el fichero, para asegurarnos
         // que se cierra tanto si todo va bien como si salta 
         // una excepcion.
         try{                    
            if( null != fr ){   
               fr.close();     
            }                  
         }catch (Exception e2){ 
            e2.printStackTrace();
         }
      }
      
      
      return texto;
   }

   
   //METODO PARA INSERTAR UN NUEVO USUARIO
   public boolean insertar(String nick, String password, String correo, String ci, String nombre, String apellidos, String f_nacimiento, String direccion, String poblacion, String provincia, String cp, String telefono){
       System.out.println("LA FECHAAAAAA: "+f_nacimiento);
       boolean registro=false;
        try{
            CallableStatement cstmt = conexion.conn.prepareCall("INSERT INTO usuarios (nick,contrasena,email,dni,nombre,apellidos,nacimiento,direccion,poblacion,provincia,cp,telefono) VALUES('"+nick+"','"+password+"','"+correo+"','"+ci+"','"+nombre+"','"+apellidos+"','"+f_nacimiento+"','"+direccion+"','"+poblacion+"','"+provincia+"','"+cp+"','"+telefono+"');");
            cstmt.executeUpdate();
            registro=true;
        }catch(SQLException e){
            System.out.println("Error!: HA HABIDO UN PROBLEMA AL INSERTAR EL USUARIO");
            e.printStackTrace();
        }
        return registro;
    }
   
   public void nickDisponible (String username) {
        usuarioExistente=0;
        ResultSet rs5=null;
        String user;
                    System.out.println ("voy a comprobar si el username ya existe");
        try {
            PreparedStatement ps=conexion.conn.prepareStatement("SELECT nick From usuarios where nick='"+username+"'");
            System.out.println("consulta:"+ps);
            rs5=ps.executeQuery();
            while(rs5.next()) {
               
                        usuarioExistente = 1;
                     
            }
        }catch(SQLException e) {
            System.out.println("ERROR!: Ha habido un problema al realizar la comprobacion");
            e.printStackTrace();
            usuarioExistente = -1;
            }
        
        
        System.out.println("Existe o no:"+usuarioExistente);
       
    }
   
   
   
   /*public boolean insertar(String nick, String password, String correo, String ci, String nombre, String apellidos, String f_nacimiento, String direccion, String poblacion, String provincia, String cp, String telefono){
       System.out.println("LA FECHAAAAAA: "+f_nacimiento);
       
       usuarioExistente=0;
       ResultSet rs5=null;
       String user;
       boolean registro=false;
            System.out.println ("voy a comprobar si el username ya existe");
            
            try {
            PreparedStatement ps=conexion.conn.prepareStatement("SELECT nick From usuarios where nick='"+nick+"'");
            System.out.println("consulta:"+ps);
            rs5=ps.executeQuery();
            while(rs5.next()) {
               
                        usuarioExistente = 1;
                     
            }
            try{
            CallableStatement cstmt = conexion.conn.prepareCall("INSERT INTO usuarios (nick,contrasena,email,dni,nombre,apellidos,nacimiento,direccion,poblacion,provincia,cp,telefono) VALUES('"+nick+"','"+password+"','"+correo+"','"+ci+"','"+nombre+"','"+apellidos+"','"+f_nacimiento+"','"+direccion+"','"+poblacion+"','"+provincia+"','"+cp+"','"+telefono+"');");
            cstmt.executeUpdate();
            registro=true;
        }catch(SQLException e){
            System.out.println("Error!: HA HABIDO UN PROBLEMA AL INSERTAR EL USUARIO");
            e.printStackTrace();
        }
            
        }catch(SQLException e) {
            System.out.println("ERROR!: Ha habido un problema al realizar la comprobacion");
            e.printStackTrace();
            usuarioExistente = -1;
            }
            System.out.println("Existe o no:"+usuarioExistente);
        
        return registro;
    }*/
   
   
   
   
   
   public String QuitarDecimalCero(float Float){
   String result=null;
        if(Float-(int)Float==0){
           result=Integer.toString((int)Float);          
        }else{
            result=String.valueOf(Float); 
        }
         return result;
   }
   
   
   
   public static Calendar DateToCalendar(String date ){
   Calendar cal = null;
        try{
                 DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
                 cal=Calendar.getInstance();
                 cal.setTime(formatter.parse(date));
        }catch (Exception e){
            e.getMessage();
        }
                 return cal;
  }
   
   
   
   public int CalcularDias(String sorteo){ 
    Calendar hoy = Calendar.getInstance();
    Calendar fechaSorteo= DateToCalendar(sorteo);
    // conseguir la representacion de la fecha en milisegundos
        long milis1 = hoy.getTimeInMillis();
        long milis2 = fechaSorteo.getTimeInMillis();
        // calcular la diferencia en milisengundos
        long diff = milis2 - milis1;
        // calcular la diferencia en dias
        long dias = diff / (24 * 60 * 60 * 1000);
        return ( (int)dias );
   }
   
   
   
   public float ConsultarSaldo(String usuario){
       float saldo=0;
       ResultSet rs4=null;
       //conexion conex = new conexion();
       
       try {
           PreparedStatement ps1=conexion.conn.prepareStatement("SELECT credito FROM usuarios WHERE nick='"+usuario+"';");
            rs4=ps1.executeQuery();
            
              while(rs4.next()) {
                saldo=rs4.getFloat(1);
              }      
        }catch(SQLException e) {
            System.out.println("ERROR!: Ha habido un problema en select id_producto");
            e.printStackTrace();
                                      
        }       
       return saldo;
   }
   
   public int CuantosBoletosQuedan(int id_producto){
       int boletos=0;
       int total=0;  
       int id_rifa=0;
       int vendidos=0;
       ResultSet rs4=null;
       //conexion conex = new conexion();
       
       try {
           PreparedStatement ps1=conexion.conn.prepareStatement("SELECT num_boletos, id_rifa FROM rifas WHERE id_producto="+id_producto+";");
            rs4=ps1.executeQuery();            
              while(rs4.next()) {
                    total=rs4.getInt(1);
                    id_rifa=rs4.getInt(2);
              }              
        }catch(SQLException e) {
            System.out.println("ERROR!: Ha habido un problema en select num_boletos, id_rifa");
            e.printStackTrace();                                    
        }              
        try {
           PreparedStatement ps1=conexion.conn.prepareStatement("SELECT COUNT(*) FROM boletos WHERE id_rifa="+id_rifa+";");
            rs4=ps1.executeQuery();
            
              while(rs4.next()) {
                    vendidos=rs4.getInt(1);
              }
              
        }catch(SQLException e) {
            System.out.println("ERROR!: Ha habido un problema en select num_boletos");
            e.printStackTrace();
                                      
        }      

        boletos=total-vendidos;   
        return boletos;
   }
   
   //METODO PARA COGER TODOS LOS DATOS DE UN USUARIO
   public Usuarios consultaUsuario(){
       Usuarios objUsuario = null;
       ResultSet rs=null;
         //conexion conex = new conexion();
         try {
            PreparedStatement ps=conexion.conn.prepareStatement("SELECT * FROM usuarios where nick = '"+usuario+"'");
                    rs=ps.executeQuery();
                    
                    while(rs.next()) {
                        DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 
                        String fecha = df.format(rs.getDate(8));
                        objUsuario = new Usuarios(rs.getInt(1),rs.getString(2),rs.getString(3),rs.getString(4),rs.getString(5),rs.getString(6),rs.getString(7),fecha,rs.getString(9),rs.getString(10),rs.getString(11),rs.getString(12),rs.getString(13),rs.getFloat(14));
                    }
        }catch(SQLException e) {
            System.out.println("ERROR!: Ha habido un problema");
            e.printStackTrace();
        }
       return objUsuario;
   }
   
   //METODO PARA HACER UN UPDATE AL CREDITO DEL USUARIO, CUANDO AÑADE MAS
   public void updateCredito(String usuario, String newCredito){
       System.out.println("EL VALOR DEL NEWCREDITO ES: "+newCredito);
       //float num=Float.parseFloat(newCredito);
         try {
            CallableStatement cstmt2 = conexion.conn.prepareCall("UPDATE usuarios SET credito="+newCredito+" WHERE nick='"+usuario+"';");
            cstmt2.executeUpdate();
         }catch(SQLException e){
             e.getMessage();
         }
   }
    
   //METODO PARA LA COMPRA DE BOLETOS
   public int ComprarBoletos(int cantidad_boletos, int posicionArray, String sald){
   int ok=1;
    ResultSet rs=null;
    //conexion conex = new conexion();
    int id_usuario_compra=0;
   
    try {
            PreparedStatement ps=conexion.conn.prepareStatement("SELECT id_usuario FROM usuarios where nick = '"+usuario+"'");
            rs=ps.executeQuery();
                    
                    while(rs.next()) {
                       id_usuario_compra=rs.getInt(1);
                    }
                    
        }catch(SQLException e) {
            System.out.println("ERROR!: Ha habido un problema en select id_usuario");
            e.printStackTrace();
            ok=0;
        }
   for(int i=0; i<cantidad_boletos;i++){     
        try {                            
                   CallableStatement cstmt = conexion.conn.prepareCall("INSERT INTO boletos (id_rifa, id_usuario, precio) VALUES ("+listaProductos.get(posicionArray).getId_rifa()+", "+id_usuario_compra+", "+listaProductos.get(posicionArray).getPrecio_boleto()+");");
                   cstmt.executeUpdate();              
         }catch(SQLException e) {
                          System.out.println("ERROR!: Ha habido un problema en insert into boletos");
                          e.printStackTrace();
                          ok=0;
                        }
        }
        try {       
                   CallableStatement cstmt = conexion.conn.prepareCall("UPDATE usuarios SET credito="+sald+" WHERE id_usuario="+id_usuario_compra+";");
                   cstmt.executeUpdate();
         }catch(SQLException e) {
                          System.out.println("ERROR!: Ha habido un problema en update sald");
                          e.printStackTrace();
                          ok=0;
                        }
   return ok;
   }//FIN DEL METODO COMPRABOLETOS
   
   //SOBRE CARGA DEL METODO MOSTRARPRODUCTOS PARA CADA USUARIO
   public  void mostrarProductos(String usuario){
        listaProductos.removeAll(listaProductos);
        ResultSet rs3=null;
         //conexion conex = new conexion();
         try {
            PreparedStatement ps=conexion.conn.prepareStatement("SELECT nombre_producto, nick, descripcion, precio, categoria, img_producto, num_boletos, tiempo, gastos_envio, productos.id_producto, id_rifa FROM productos JOIN usuarios ON productos.id_usuario=usuarios.id_usuario JOIN rifas ON productos.id_producto=rifas.id_producto WHERE usuarios.nick = '"+usuario+"';");
                    rs3=ps.executeQuery();
                    
                    while(rs3.next()) {
                        
                        Producto pro= new Producto();
                        
                        pro.setNombre_producto(rs3.getString(1));//El numero entre parentesis es el orden que ocupa el campo en la tabla de la BBDD
                        pro.setNick_usuario(rs3.getString(2));
                        pro.setDescripcion(rs3.getString(3));
                        pro.setPrecio(rs3.getFloat(4));
                        pro.setCategoría(rs3.getString(5));
                        pro.setImg_producto(rs3.getString(6));
                        pro.setNum_boletos(rs3.getInt(7));
                            //calcular los dias que faltan
                           
                        
                            DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 
                            String text = df.format(rs3.getDate(8)); 
                            
                            
                        pro.setDias(CalcularDias(text)+1); 
                        pro.setFecha(text);
                        pro.setPrecio_boleto(pro.getPrecio()/pro.getNum_boletos());
                        
                        pro.setGastos(rs3.getFloat(9));
                        pro.setId_producto(rs3.getInt(10));
                        pro.setId_rifa(rs3.getInt(11));
                        
                        pro.setBoletos_rest(CuantosBoletosQuedan(pro.getId_producto()));
                        
                        listaProductos.add(pro); 
                    }
        }catch(SQLException e) {
            System.out.println("ERROR!: Ha habido un problema");
            e.printStackTrace();
            }
    }//FIN DEL METODO MOSTRARPRODUCTOS POR USUARIO
   
   //METODO PARA MOSTRAR LOS BOLETOS COMPRADOS DE USUARIO
   public ResultSet mostrarBoletos(String usuario){
        ResultSet rs3=null;
         //conexion conex = new conexion();
         try {
            PreparedStatement ps=conexion.conn.prepareStatement("SELECT nick, boletos.id_rifa,COUNT(boletos.id_rifa) FROM boletos JOIN usuarios ON boletos.id_usuario=usuarios.id_usuario JOIN rifas ON boletos.id_rifa=rifas.id_rifa WHERE usuarios.nick = '"+usuario+"' GROUP BY boletos.id_rifa;");
                    rs3=ps.executeQuery();
        }catch(SQLException e) {
            System.out.println("ERROR!: Ha habido un problema");
            e.printStackTrace();
            }
         return rs3;
    }//FIN DEL METODO MOSTRARBOLETOS
   
   //METODO PARA MOSTRAR LOS BOLETOS DE X RIFA COMPRADOS DE USUARIO
   public ResultSet mostrarBoletos(String usuario, int idRifa){
        ResultSet rs3=null;
         //conexion conex = new conexion();
         try {
            PreparedStatement ps=conexion.conn.prepareStatement("select productos.img_producto, rifas.id_rifa, productos.nombre_producto, productos.descripcion, productos.precio, productos.categoria, rifas.tiempo, rifas.gastos_envio, boletos.precio, boletos.id_boleto from boletos join rifas on boletos.id_rifa=rifas.id_rifa join productos on rifas.id_producto=productos.id_producto join usuarios on boletos.id_usuario=usuarios.id_usuario where rifas.id_rifa="+idRifa+" and usuarios.nick='"+usuario+"';");
                    rs3=ps.executeQuery();
        }catch(SQLException e) {
            System.out.println("ERROR!: Ha habido un problema");
            e.printStackTrace();
            }
         return rs3;
    }//FIN DEL METODO MOSTRARBOLETOS
   
   
   
    public  void mostrarProductos(int categoria){
      listaProductos.removeAll(listaProductos);
        ResultSet rs3=null;
         //conexion conex = new conexion();
         try {
             
         switch (categoria){
             case 0: //Deportes
                 
                 PreparedStatement ps0=conexion.conn.prepareStatement("SELECT nombre_producto, nick, descripcion, precio, categoria, img_producto, num_boletos, tiempo, gastos_envio, productos.id_producto, id_rifa FROM productos JOIN usuarios ON productos.id_usuario=usuarios.id_usuario JOIN rifas ON productos.id_producto=rifas.id_producto WHERE categoria = 'Deportes';");
                    rs3=ps0.executeQuery();
                    
                    while(rs3.next()) {
                        
                        Producto pro= new Producto();
                        
                        pro.setNombre_producto(rs3.getString(1));//El numero entre parentesis es el orden que ocupa el campo en la tabla de la BBDD
                        pro.setNick_usuario(rs3.getString(2));
                        pro.setDescripcion(rs3.getString(3));
                        pro.setPrecio(rs3.getFloat(4));
                        pro.setCategoría(rs3.getString(5));
                        pro.setImg_producto(rs3.getString(6));
                        pro.setNum_boletos(rs3.getInt(7));
                            //calcular los dias que faltan
                           
                        
                            DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 
                            String text = df.format(rs3.getDate(8)); 
                            
                            
                        pro.setDias(CalcularDias(text)+1); 
                        pro.setFecha(text);
                        pro.setPrecio_boleto(pro.getPrecio()/pro.getNum_boletos());
                        
                        pro.setGastos(rs3.getFloat(9));
                        pro.setId_producto(rs3.getInt(10));
                        pro.setId_rifa(rs3.getInt(11));
                        
                        pro.setBoletos_rest(CuantosBoletosQuedan(pro.getId_producto()));
                        
                        listaProductos.add(pro); 
                  
                    }
               break;
                 
             case 1: //Deportes
                 
                 PreparedStatement ps=conexion.conn.prepareStatement("SELECT nombre_producto, nick, descripcion, precio, categoria, img_producto, num_boletos, tiempo, gastos_envio, productos.id_producto, id_rifa FROM productos JOIN usuarios ON productos.id_usuario=usuarios.id_usuario JOIN rifas ON productos.id_producto=rifas.id_producto WHERE categoria = 'Deportes';");
                    rs3=ps.executeQuery();
                    
                    while(rs3.next()) {
                        
                        Producto pro= new Producto();
                        
                        pro.setNombre_producto(rs3.getString(1));//El numero entre parentesis es el orden que ocupa el campo en la tabla de la BBDD
                        pro.setNick_usuario(rs3.getString(2));
                        pro.setDescripcion(rs3.getString(3));
                        pro.setPrecio(rs3.getFloat(4));
                        pro.setCategoría(rs3.getString(5));
                        pro.setImg_producto(rs3.getString(6));
                        pro.setNum_boletos(rs3.getInt(7));
                            //calcular los dias que faltan
                           
                        
                            DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 
                            String text = df.format(rs3.getDate(8)); 
                            
                            
                        pro.setDias(CalcularDias(text)+1); 
                        pro.setFecha(text);
                        pro.setPrecio_boleto(pro.getPrecio()/pro.getNum_boletos());
                        
                        pro.setGastos(rs3.getFloat(9));
                        pro.setId_producto(rs3.getInt(10));
                        pro.setId_rifa(rs3.getInt(11));
                        
                        pro.setBoletos_rest(CuantosBoletosQuedan(pro.getId_producto()));
                        
                      if(pro.getDias()>0){
                        listaProductos.add(pro);
                        }
                  
                    }
               break;
                 
                 
                 
             case 2: //Complementos
                 
                 
           PreparedStatement ps1=conexion.conn.prepareStatement("SELECT nombre_producto, nick, descripcion, precio, categoria, img_producto, num_boletos, tiempo, gastos_envio, productos.id_producto, id_rifa FROM productos JOIN usuarios ON productos.id_usuario=usuarios.id_usuario JOIN rifas ON productos.id_producto=rifas.id_producto WHERE categoria = 'Complementos';");
                    rs3=ps1.executeQuery();
                    
                    while(rs3.next()) {
                        
                        Producto pro= new Producto();
                        
                        pro.setNombre_producto(rs3.getString(1));//El numero entre parentesis es el orden que ocupa el campo en la tabla de la BBDD
                        pro.setNick_usuario(rs3.getString(2));
                        pro.setDescripcion(rs3.getString(3));
                        pro.setPrecio(rs3.getFloat(4));
                        pro.setCategoría(rs3.getString(5));
                        pro.setImg_producto(rs3.getString(6));
                        pro.setNum_boletos(rs3.getInt(7));
                            //calcular los dias que faltan
                           
                        
                            DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 
                            String text = df.format(rs3.getDate(8)); 
                            
                            
                        pro.setDias(CalcularDias(text)+1); 
                        pro.setFecha(text);
                        pro.setPrecio_boleto(pro.getPrecio()/pro.getNum_boletos());
                        
                        pro.setGastos(rs3.getFloat(9));
                        pro.setId_producto(rs3.getInt(10));
                        pro.setId_rifa(rs3.getInt(11));
                        
                        pro.setBoletos_rest(CuantosBoletosQuedan(pro.getId_producto()));
                        
                      if(pro.getDias()>0){
                        listaProductos.add(pro);
                        }
                  
                    }       
                 
                 
                 
                 break;
                 
                 
                 
             case 3: //Tecnonolgia
                 
           PreparedStatement ps2=conexion.conn.prepareStatement("SELECT nombre_producto, nick, descripcion, precio, categoria, img_producto, num_boletos, tiempo, gastos_envio, productos.id_producto, id_rifa FROM productos JOIN usuarios ON productos.id_usuario=usuarios.id_usuario JOIN rifas ON productos.id_producto=rifas.id_producto WHERE categoria = 'Tecnologia';");
                    rs3=ps2.executeQuery();
                    
                    while(rs3.next()) {
                        
                        Producto pro= new Producto();
                        
                        pro.setNombre_producto(rs3.getString(1));//El numero entre parentesis es el orden que ocupa el campo en la tabla de la BBDD
                        pro.setNick_usuario(rs3.getString(2));
                        pro.setDescripcion(rs3.getString(3));
                        pro.setPrecio(rs3.getFloat(4));
                        pro.setCategoría(rs3.getString(5));
                        pro.setImg_producto(rs3.getString(6));
                        pro.setNum_boletos(rs3.getInt(7));
                            //calcular los dias que faltan
                           
                        
                            DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 
                            String text = df.format(rs3.getDate(8)); 
                            
                            
                        pro.setDias(CalcularDias(text)+1); 
                        pro.setFecha(text);
                        pro.setPrecio_boleto(pro.getPrecio()/pro.getNum_boletos());
                        
                        pro.setGastos(rs3.getFloat(9));
                        pro.setId_producto(rs3.getInt(10));
                        pro.setId_rifa(rs3.getInt(11));
                        
                        pro.setBoletos_rest(CuantosBoletosQuedan(pro.getId_producto()));
                        
                       if(pro.getDias()>0){
                        listaProductos.add(pro);
                        }
                  
                    }                     
                 
                 
                 
                 
                 
                break;
                 
             case 4: //Hogar
                 
           PreparedStatement ps3=conexion.conn.prepareStatement("SELECT nombre_producto, nick, descripcion, precio, categoria, img_producto, num_boletos, tiempo, gastos_envio, productos.id_producto, id_rifa FROM productos JOIN usuarios ON productos.id_usuario=usuarios.id_usuario JOIN rifas ON productos.id_producto=rifas.id_producto WHERE categoria = 'Hogar';");
                    rs3=ps3.executeQuery();
                    
                    while(rs3.next()) {
                        
                        Producto pro= new Producto();
                        
                        pro.setNombre_producto(rs3.getString(1));//El numero entre parentesis es el orden que ocupa el campo en la tabla de la BBDD
                        pro.setNick_usuario(rs3.getString(2));
                        pro.setDescripcion(rs3.getString(3));
                        pro.setPrecio(rs3.getFloat(4));
                        pro.setCategoría(rs3.getString(5));
                        pro.setImg_producto(rs3.getString(6));
                        pro.setNum_boletos(rs3.getInt(7));
                            //calcular los dias que faltan
                           
                        
                            DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 
                            String text = df.format(rs3.getDate(8)); 
                            
                            
                        pro.setDias(CalcularDias(text)+1); 
                        pro.setFecha(text);
                        pro.setPrecio_boleto(pro.getPrecio()/pro.getNum_boletos());
                        
                        pro.setGastos(rs3.getFloat(9));
                        pro.setId_producto(rs3.getInt(10));
                        pro.setId_rifa(rs3.getInt(11));
                        
                        pro.setBoletos_rest(CuantosBoletosQuedan(pro.getId_producto()));
                        
                       if(pro.getDias()>0){
                        listaProductos.add(pro);
                        }
                  
                    }                  
                 
                 
                 
                 
                 break;
            
                    }
        }catch(SQLException e) {
            System.out.println("ERROR!: Ha habido un problema en select para cada categoria");
            e.printStackTrace();
            }
    
    }
   
    
    public void crearListCategoria(){
     listaProductos.removeAll(listaProductos);
        
          if(categoria_seleccionada.equals("Categoria")){
               mostrarProductos();
               }
               if(categoria_seleccionada.equals("Deportes")){
               mostrarProductos(1);
               }
               if(categoria_seleccionada.equals("Complementos")){
               mostrarProductos(2);
               }
               if(categoria_seleccionada.equals("Tecnologia")){
               mostrarProductos(3);
               }
               if(categoria_seleccionada.equals("Hogar")){
               mostrarProductos(4);
               }
    }
    
   public void updateDatosPersonales(String nick, String nombre, String apellidos, String dni){
       try {
            CallableStatement cstmt2 = conexion.conn.prepareCall("UPDATE usuarios SET nick='"+nick+"', nombre='"+nombre+"', apellidos='"+apellidos+"', dni='"+dni+"' WHERE nick='"+usuario+"';");
            cstmt2.executeUpdate();
            usuario=nick;
         }catch(SQLException e){
             e.getMessage();
         }
   }
  public void Ordenar_asc(){
     listaProductos.removeAll(listaProductos);
        ResultSet rs3=null;
         conexion conex = new conexion();
         try {
             PreparedStatement ps2=conexion.conn.prepareStatement("SELECT nombre_producto, nick, descripcion, productos.precio, categoria, img_producto, num_boletos, tiempo, gastos_envio, productos.id_producto, rifas.id_rifa, rifas.precio_boleto FROM productos JOIN usuarios ON productos.id_usuario=usuarios.id_usuario JOIN rifas ON productos.id_producto=rifas.id_producto ORDER BY rifas.precio_boleto ;");
                    rs3=ps2.executeQuery();
                    
                    while(rs3.next()) {
                        
                        Producto pro= new Producto();
                        
                        pro.setNombre_producto(rs3.getString(1));//El numero entre parentesis es el orden que ocupa el campo en la tabla de la BBDD
                        pro.setNick_usuario(rs3.getString(2));
                        pro.setDescripcion(rs3.getString(3));
                        pro.setPrecio(rs3.getFloat(4));
                        pro.setCategoría(rs3.getString(5));
                        pro.setImg_producto(rs3.getString(6));
                        pro.setNum_boletos(rs3.getInt(7));
                            //calcular los dias que faltan
                           
                        
                            DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 
                            String text = df.format(rs3.getDate(8)); 
                            
                            
                        pro.setDias(CalcularDias(text)+1); 
                        pro.setFecha(text);
                        
                        
                        pro.setGastos(rs3.getFloat(9));
                        pro.setId_producto(rs3.getInt(10));
                        pro.setId_rifa(rs3.getInt(11));
                        pro.setPrecio_boleto(rs3.getFloat(12));
                        pro.setBoletos_rest(CuantosBoletosQuedan(pro.getId_producto()));
                        
                       if(pro.getDias()>0){
                        listaProductos.add(pro);
                        }
                  
                    }                     
                 
                 
                 
             
       
        }catch(SQLException e) {
            System.out.println("ERROR!: Ha habido un problema en select order by precio");
            e.printStackTrace();
            }
        
          
        }
        
        
    
  
  public void Ordenar_des(){
     listaProductos.removeAll(listaProductos);
        ResultSet rs3=null;
         conexion conex = new conexion();
         try {
             PreparedStatement ps2=conexion.conn.prepareStatement("SELECT nombre_producto, nick, descripcion, productos.precio, categoria, img_producto, num_boletos, tiempo, gastos_envio, productos.id_producto, rifas.id_rifa, rifas.precio_boleto FROM productos JOIN usuarios ON productos.id_usuario=usuarios.id_usuario JOIN rifas ON productos.id_producto=rifas.id_producto ORDER BY rifas.precio_boleto DESC;");
                    rs3=ps2.executeQuery();
                    
                    while(rs3.next()) {
                        
                        Producto pro= new Producto();
                        
                        pro.setNombre_producto(rs3.getString(1));//El numero entre parentesis es el orden que ocupa el campo en la tabla de la BBDD
                        pro.setNick_usuario(rs3.getString(2));
                        pro.setDescripcion(rs3.getString(3));
                        pro.setPrecio(rs3.getFloat(4));
                        pro.setCategoría(rs3.getString(5));
                        pro.setImg_producto(rs3.getString(6));
                        pro.setNum_boletos(rs3.getInt(7));
                            //calcular los dias que faltan
                           
                        
                            DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 
                            String text = df.format(rs3.getDate(8)); 
                            
                            
                        pro.setDias(CalcularDias(text)+1); 
                        pro.setFecha(text);
                        
                        
                        pro.setGastos(rs3.getFloat(9));
                        pro.setId_producto(rs3.getInt(10));
                        pro.setId_rifa(rs3.getInt(11));
                        pro.setPrecio_boleto(rs3.getFloat(12));
                        pro.setBoletos_rest(CuantosBoletosQuedan(pro.getId_producto()));
                        
                       if(pro.getDias()>0){
                        listaProductos.add(pro);
                        }
                  
                    }                     
                 
                 
                 
             
       
        }catch(SQLException e) {
            System.out.println("ERROR!: Ha habido un problema en select order by precio");
            e.printStackTrace();
            }
        
          
        }

  
  
  
  public void Ordenar_fasc(){
     listaProductos.removeAll(listaProductos);
        ResultSet rs3=null;
         conexion conex = new conexion();
         try {
             PreparedStatement ps2=conexion.conn.prepareStatement("SELECT nombre_producto, nick, descripcion, productos.precio, categoria, img_producto, num_boletos, tiempo, gastos_envio, productos.id_producto, rifas.id_rifa, rifas.precio_boleto FROM productos JOIN usuarios ON productos.id_usuario=usuarios.id_usuario JOIN rifas ON productos.id_producto=rifas.id_producto ORDER BY tiempo ;");
                    rs3=ps2.executeQuery();
                    
                    while(rs3.next()) {
                        
                        Producto pro= new Producto();
                        
                        pro.setNombre_producto(rs3.getString(1));//El numero entre parentesis es el orden que ocupa el campo en la tabla de la BBDD
                        pro.setNick_usuario(rs3.getString(2));
                        pro.setDescripcion(rs3.getString(3));
                        pro.setPrecio(rs3.getFloat(4));
                        pro.setCategoría(rs3.getString(5));
                        pro.setImg_producto(rs3.getString(6));
                        pro.setNum_boletos(rs3.getInt(7));
                            //calcular los dias que faltan
                           
                        
                            DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 
                            String text = df.format(rs3.getDate(8)); 
                            
                            
                        pro.setDias(CalcularDias(text)+1); 
                        pro.setFecha(text);
                        
                        
                        pro.setGastos(rs3.getFloat(9));
                        pro.setId_producto(rs3.getInt(10));
                        pro.setId_rifa(rs3.getInt(11));
                        pro.setPrecio_boleto(rs3.getFloat(12));
                        pro.setBoletos_rest(CuantosBoletosQuedan(pro.getId_producto()));
                        
                       if(pro.getDias()>0){
                        listaProductos.add(pro);
                        }
                  
                    }                     
                 
                 
                 
             
       
        }catch(SQLException e) {
            System.out.println("ERROR!: Ha habido un problema en select order by precio");
            e.printStackTrace();
            }
        
          
        }
        
        
    
  
  public void Ordenar_fdes(){
     listaProductos.removeAll(listaProductos);
        ResultSet rs3=null;
         conexion conex = new conexion();
         try {
             PreparedStatement ps2=conexion.conn.prepareStatement("SELECT nombre_producto, nick, descripcion, productos.precio, categoria, img_producto, num_boletos, tiempo, gastos_envio, productos.id_producto, rifas.id_rifa, rifas.precio_boleto FROM productos JOIN usuarios ON productos.id_usuario=usuarios.id_usuario JOIN rifas ON productos.id_producto=rifas.id_producto ORDER BY tiempo DESC;");
                    rs3=ps2.executeQuery();
                    
                    while(rs3.next()) {
                        
                        Producto pro= new Producto();
                        
                        pro.setNombre_producto(rs3.getString(1));//El numero entre parentesis es el orden que ocupa el campo en la tabla de la BBDD
                        pro.setNick_usuario(rs3.getString(2));
                        pro.setDescripcion(rs3.getString(3));
                        pro.setPrecio(rs3.getFloat(4));
                        pro.setCategoría(rs3.getString(5));
                        pro.setImg_producto(rs3.getString(6));
                        pro.setNum_boletos(rs3.getInt(7));
                            //calcular los dias que faltan
                           
                        
                            DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 
                            String text = df.format(rs3.getDate(8)); 
                            
                            
                        pro.setDias(CalcularDias(text)+1); 
                        pro.setFecha(text);
                        
                        
                        pro.setGastos(rs3.getFloat(9));
                        pro.setId_producto(rs3.getInt(10));
                        pro.setId_rifa(rs3.getInt(11));
                        pro.setPrecio_boleto(rs3.getFloat(12));
                        pro.setBoletos_rest(CuantosBoletosQuedan(pro.getId_producto()));
                        
                       if(pro.getDias()>0){
                        listaProductos.add(pro);
                        }
                  
                    }                     
                 
                 
                 
             
       
        }catch(SQLException e) {
            System.out.println("ERROR!: Ha habido un problema en select order by precio");
            e.printStackTrace();
            }
        
          
        }
        
  
  public int compass(String pass){

      int ok=2;
  
  ResultSet rs3=null;
         conexion conex = new conexion();
         try {
             PreparedStatement ps2=conexion.conn.prepareStatement("SELECT nick, contrasena  FROM usuarios WHERE nick='"+usuario+"' AND contrasena='"+pass+"';");
                    rs3=ps2.executeQuery();
                    if(rs3.next()){
                    ok=1;
                    }
                    
    }catch(SQLException e) {
            System.out.println("ERROR!: Ha habido un problema en select nick, contrasena");
            e.printStackTrace();
            ok=0;
            }
                         
  
  return ok;
  }
  
  public int cambiopass(String pass){
  int ok=2;
  
  ResultSet rs3=null;
         conexion conex = new conexion();
         try {
           CallableStatement cstmt2 = conexion.conn.prepareCall("UPDATE usuarios SET contrasena='"+pass+"' WHERE nick='"+usuario+"';");
            cstmt2.executeUpdate();
            ok=1;
                    
                    
    }catch(SQLException e) {
            System.out.println("ERROR!: Ha habido un problema en select nick, contrasena");
            e.printStackTrace();
            ok=0;
            }
                         
  
  return ok;
  }
   
  
  
  
  
  

   public void updateDatosContacto(String direccion, String provincia, String poblacion, String cp, String correo, String telefono){
       try {
            CallableStatement cstmt2 = conexion.conn.prepareCall("UPDATE usuarios SET direccion='"+direccion+"', provincia='"+provincia+"', poblacion='"+poblacion+"', cp='"+cp+"', email='"+correo+"', telefono='"+telefono+"' WHERE nick='"+usuario+"';");
            cstmt2.executeUpdate();
         }catch(SQLException e){
             e.getMessage();
         }
   }
   
   public void updatePass(String pass, String correo){
       try {
            CallableStatement cstmt2 = conexion.conn.prepareCall("UPDATE usuarios SET contrasena='"+pass+"' WHERE email='"+correo+"';");
            cstmt2.executeUpdate();
         }catch(SQLException e){
             e.getMessage();
         }
   }

   public boolean buscarCorreo(String correo){
       boolean existe=false;
       ResultSet rs1=null;
       try {
            PreparedStatement ps=conexion.conn.prepareStatement("SELECT email FROM usuarios WHERE email='"+correo+"'");
            System.out.println("consulta:"+ps);
            rs1=ps.executeQuery();
            while(rs1.next()) {
                existe=true;
            }
        }catch(SQLException e) {
            System.out.println("ERROR!: Ha habido un problema al realizar la comprobacion");
            e.printStackTrace();
            usuarioExistente = -1;
            }
       return existe;
   }
   
   public static String md5(String clear) throws Exception {
    MessageDigest md = MessageDigest.getInstance("MD5");
    byte[] b = md.digest(clear.getBytes());
    int size = b.length;
    StringBuffer h = new StringBuffer(size);
    //algoritmo y arreglo md5
        for (int i = 0; i < size; i++) {
            int u = b[i] & 255;
                if (u < 16) {
                    h.append("0" + Integer.toHexString(u));
                }
               else {
                    h.append(Integer.toHexString(u));
               }
           }
      //clave encriptada
      return h.toString();
    }
   
   public boolean enviarCorreo(String email){
       boolean correoEnviado=false;
       String pass=GeneradorPass.getPassword(8);
        try
        {
            // Propiedades de la conexión
            Properties props = new Properties();
            props.setProperty("mail.smtp.host", "smtp.gmail.com");
            props.setProperty("mail.smtp.starttls.enable", "true");
            props.setProperty("mail.smtp.port", "587");
            props.setProperty("mail.smtp.user", "carlos.kmbajochero@gmail.com");
            props.setProperty("mail.smtp.auth", "true");

            // Preparamos la sesion
            Session session = Session.getDefaultInstance(props);

            // Construimos el mensaje
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress("servicesuraffling@uraffling.com"));
            message.addRecipient(
                Message.RecipientType.TO,
                new InternetAddress(email));
            message.setSubject("URAFFLING.COM NEW PASS");
            message.setText(
                "Tu nueva contraseña es: "+pass+ " puedes cambiar esta contraseña desde los ajuste en tu perfil.");

            // Lo enviamos.
            Transport t = session.getTransport("smtp");
            t.connect("carlos.kmbajochero@gmail.com", "160290x8155444");
            t.sendMessage(message, message.getAllRecipients());

            // Cierre.
            t.close();
            updatePass(md5(pass),email);
            correoEnviado=true;
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        return correoEnviado;
    }
}
